import Vue from 'vue';
import Vuex from 'vuex';
import axios from 'axios';

//让Vue框架使用
Vue.use(Vuex);

export default {
    //需要写几个常用属性（常用）
    state: {
        //定义属性，会在vue组件里卖弄调用
        bestHouse: [],
        houseTotal: 0,
        house: {}
    },
    mutations: {
        //给上面state定义的属性设置值
        //这里的犯法，组件也可以调用
        setBestHouse(state, val) {
            //通过这方法去改bestHouse属性值
            //做数据追加 concat拼接方法
            // state.bestHouse = val;
            state.bestHouse = state.bestHouse.concat(val);
        }
    },
    actions: {
        //定义方法，再vue组件里面调用
        getHouse({ commit, state }, pn) {
            //页码  
            let start = (pn - 1) * 3; //0 3 6 9
            let end = start + 3; //3 6 9 12

            //异步请求
            //getHouse (){} //原版结果：getHouse：function（）{}

            axios({
                method: 'get',
                url: "/data/house_data.json?pn=1"
            }).then((res) => {
                console.log(res);
                let data = res.data;
                if (data.code === 200) {
                    //给属性besthouse赋值
                    commit('setBestHouse', data.bestHouse.slice(start, end));

                    //记录总数
                    state.houseTotal = data.bestHouse.length;
                }
            }).catch(() => {

            });

        },
        // 查询一个房源的信息
        getOneHouse({ state }, json) {
            axios({
                method: 'get',
                url: "/data/house_data.json"
            }).then((res) => {
                console.log(res);
                let data = res.data;
                if (data.code === 200) {
                    //附加：模拟数据，需要筛选其中对应的一个房源信息
                    let House;
                    console.log(json.t);
                    console.log(json.t === "best");
                    if (json.t === "best") {
                        House = data.bestHouse; //数组（全部精选房源）
                    } else {
                        House = data.newHouse; //数组（全部新房源）
                    }

                    let house = {};
                    House.forEach((v) => {
                        if (v.hid == json.h) {
                            house = v; //把对应的那个房源的值赋值给house

                        }
                    });
                    state.house = house;

                }
            }).catch(() => {

            });
        }
    },
    modules: {
        //如果需要引入其他中间件文件，则在这里写

    }

};